<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2006" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           targetNamespace="http://microsoft.com/schemas/VisualStudio/TeamTest/2006" 
           elementFormDefault="qualified" attributeFormDefault="unqualified" version="2006.04">
  <xs:complexType name="BaseTestType" abstract="true">
    <xs:annotation>
      <xs:documentation>Shared between all test types.</xs:documentation>
    </xs:annotation>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="Css" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Currituck subsystem something ... </xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:attribute name="projectStructure" type="xs:string" use="required"/>
          <xs:attribute name="iteration" type="xs:string" use="required"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="Description" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Describes the test. This is shown in the properties window.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Agent" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="AgentAttribute" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attribute name="name" type="xs:string" use="required"/>
                <xs:attribute name="value" type="xs:string" use="required"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="abortRunOnFailure" type="xs:boolean" use="optional" default="false"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="Owners" minOccurs="0">
        <xs:annotation>
          <xs:documentation>At the moment only one owner is allowed, but in the future we might extend to multiple owner support.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Owner">
              <xs:annotation>
                <xs:documentation>For example REDMOND\user1</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:attribute name="name" type="xs:string" use="required"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="DeploymentItems" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Files to deploy before executing this test.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="DeploymentItemsType"/>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Execution" minOccurs="0">
        <xs:complexType>
          <xs:attribute name="id" type="xs:string" use="optional" default="00000000-0000-0000-0000-000000000000"/>
          <xs:attribute name="parentId" type="xs:string" use="optional" default="00000000-0000-0000-0000-000000000000"/>
          <xs:attribute name="isRunOnRestart" type="xs:boolean" use="optional" default="false"/>
          <xs:attribute name="timeOut" type="xs:int" use="optional" default="0"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="WorkItemIDs" type="WorkItemIDsType" minOccurs="0">
        <xs:annotation>
          <xs:documentation>References to workitems (bugs, issues) related to this test on the team server.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:choice>
    <xs:attribute name="enabled" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="id" type="xs:string" use="required"/>
    <xs:attribute name="name" type="xs:string" use="required"/>
    <xs:attribute name="isGroupable" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="priority" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="storage" type="xs:string" use="optional"/>
  </xs:complexType>
  <xs:complexType name="BrowserType">
    <xs:sequence>
      <xs:element name="Headers" type="HeadersType" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required"/>
    <xs:attribute name="MaxConnections" type="xs:int" use="optional"/>
  </xs:complexType>
  <xs:complexType name="CodedWebTestElementType">
    <xs:annotation>
      <xs:documentation>Coded web test in TRX file</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BaseTestType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="WebTestClass" minOccurs="0">
            <xs:complexType>
              <xs:attribute name="assembly" use="required"/>
              <xs:attribute name="namespace" use="required"/>
              <xs:attribute name="class" use="required"/>
            </xs:complexType>
          </xs:element>
          <xs:element name="IncludedWebTests" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="IncludedWebTest" minOccurs="0" maxOccurs="unbounded">
                  <xs:complexType>
                    <xs:attribute name="name" use="required"/>
                    <xs:attribute name="path" use="required"/>
                    <xs:attribute name="testId" use="required"/>
                    <xs:attribute name="isCodedWebTest" type="xs:boolean" default="false"/>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="CounterDescriptorType">
    <xs:attribute name="machineName" type="xs:string" use="required"/>
    <xs:attribute name="categoryName" type="xs:string"/>
    <xs:attribute name="counterName" type="xs:string" use="required"/>
    <xs:attribute name="instanceName" type="xs:string" use="required"/>
    <xs:attribute name="baseInstanceName" type="xs:string" use="required"/>
    <xs:attribute name="loadTestItemId" type="xs:int" default="-1"/>
  </xs:complexType>
  <xs:complexType name="CounterSetType">
    <xs:sequence>
      <xs:element name="CounterCategories" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="CounterCategory" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Counters">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Counter" type="CounterType" minOccurs="0" maxOccurs="unbounded"/>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="Instances"/>
                </xs:sequence>
                <xs:attribute name="name" type="xs:string" use="required"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required"/>
    <xs:attribute name="counterSetType" type="xs:string" use="required"/>
  </xs:complexType>
  <xs:complexType name="CountersType">
    <xs:attribute name="total" type="xs:int" use="optional"/>
    <xs:attribute name="error" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="failed" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="timeout" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="aborted" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="inconclusive" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="passedButRunAborted" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="notRunnable" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="notExecuted" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="executed" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="disconnected" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="warning" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="passed" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="completed" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="inProgress" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="pending" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="value" type="xs:string" use="optional"/>
  </xs:complexType>
  <xs:complexType name="CounterType">
    <xs:sequence>
      <xs:element name="ThresholdRules" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ThresholdRule" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Parameters">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="RuleParameter" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:attribute name="name" type="xs:string" use="required"/>
                            <xs:attribute name="value" type="xs:string" use="required"/>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="className" type="xs:string" use="required"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required"/>
  </xs:complexType>
  <xs:complexType name="DeclarativeWebTestElementType">
    <xs:annotation>
      <xs:documentation>Declarative web test in TRX file</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="BaseTestType">
        <xs:attribute name="persistedWebTest" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="DeploymentItemsType">
    <xs:sequence>
      <xs:element name="DeploymentItem" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="filename" type="xs:string" use="required"/>
          <xs:attribute name="outputDirectory" type="xs:string" use="optional"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="DevelopmentServerType">
    <xs:attribute name="pathToWebSite" type="xs:string" use="required"/>
    <xs:attribute name="webApplicationRoot" type="xs:string" use="required"/>
    <xs:attribute name="name" type="xs:string" use="optional"/>
  </xs:complexType>
  <xs:simpleType name="ExecutionTypeEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="local"/>
      <xs:enumeration value="remote"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="GenericTest" type="GenericTestType"/>
  <xs:complexType name="GenericTestType">
    <xs:complexContent>
      <xs:extension base="BaseTestType">
        <xs:choice minOccurs="0" maxOccurs="2">
          <xs:element name="Command" maxOccurs="1">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="EnvironmentVariables" minOccurs="0">
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element name="EnvironmentVariable" minOccurs="0" maxOccurs="unbounded">
                        <xs:complexType>
                          <xs:attribute name="name" type="xs:string" use="required"/>
                          <xs:attribute name="value" type="xs:string" use="required"/>
                        </xs:complexType>
                      </xs:element>
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
              <xs:attribute name="filename" type="xs:string" use="required"/>
              <xs:attribute name="arguments" type="xs:string" use="optional"/>
              <xs:attribute name="workingDirectory" type="xs:string" use="optional"/>
              <xs:attribute name="maxDuration" type="xs:int" use="optional" default="3600000">
                <xs:annotation>
                  <xs:documentation>This is in addition to the timeout to distinguish between a failed command and a test that timed out.</xs:documentation>
                </xs:annotation>
              </xs:attribute>
              <xs:attribute name="redirectStandardOutputAndError" type="xs:boolean" use="optional" default="true"/>
            </xs:complexType>
          </xs:element>
          <xs:element name="SummaryXmlFile" minOccurs="0" maxOccurs="1">
            <xs:annotation>
              <xs:documentation>If this element does not exist it's the same as if it was not enabled. 
But if it's not enabled, we still allow the user to change the file location and persist the file location for later use.</xs:documentation>
            </xs:annotation>
            <xs:complexType>
              <xs:attribute name="path" type="xs:string" use="required"/>
              <xs:attribute name="enabled" type="xs:boolean" use="optional" default="false"/>
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="GraphDescriptorType">
    <xs:sequence>
      <xs:element name="HorizontalZoomRange" type="RangeType" minOccurs="0"/>
      <xs:element name="VerticalZoomRange" type="RangeType" minOccurs="0"/>
      <xs:element name="PlotDescriptors" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PlotDescriptor" type="PlotDescriptorType" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="graphName" use="required"/>
  </xs:complexType>
  <xs:complexType name="HeadersType">
    <xs:sequence>
      <xs:element name="Header" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="name" type="xs:string" use="required"/>
          <xs:attribute name="value" type="xs:string" use="required"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="IDSimpleType">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
  <xs:complexType name="IDElementType">
    <xs:attribute name="id" type="IDSimpleType" use="required"/>
  </xs:complexType>
  <xs:complexType name="LinkType">
    <xs:attribute name="id" type="IDSimpleType" use="required"/>
    <xs:attribute name="name" type="xs:string" use="optional"/>
    <xs:attribute name="storage" type="xs:string" use="required"/>
    <xs:attribute name="enabled" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="type" type="xs:string" use="required"/>
  </xs:complexType>
  <xs:complexType name="LoadRunConfigurationType">
    <xs:sequence>
      <xs:element name="CounterSetMappings">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="CounterSetMapping" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="CounterSetReferences">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="CounterSetReference">
                          <xs:complexType>
                            <xs:attribute name="counterSetName"/>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="computerName" type="xs:string" use="required"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ContextParameters"/>
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required"/>
    <xs:attribute name="description" type="xs:string" use="optional"/>
    <xs:attribute name="timingDetailsStorage" type="xs:int" use="optional"/>
    <xs:attribute name="resultsStoreType" type="xs:int" use="optional" default="1"/>
    <xs:attribute name="maxErrorDetails" type="xs:int" use="optional" default="100"/>
    <xs:attribute name="maxRequestUrlsReported" type="xs:int" use="required"/>
    <xs:attribute name="useTestIterations" type="xs:boolean" use="optional"/>
    <xs:attribute name="runDuration" type="xs:int" use="required"/>
    <xs:attribute name="warmupTime" type="xs:int" use="required"/>
    <xs:attribute name="coolDownTime" type="xs:int" use="optional"/>
    <xs:attribute name="testIterations" type="xs:int" use="optional"/>
    <xs:attribute name="webTestConnectionModel" type="xs:string" use="optional"/>
    <xs:attribute name="webTestConnectionPoolSize" type="xs:int" use="optional"/>
    <xs:attribute name="sampleRate" type="xs:int" use="required"/>
    <xs:attribute name="validationLevel" type="xs:int" use="required"/>
    <xs:attribute name="sqlTracingConnectString" type="xs:string" use="optional"/>
    <xs:attribute name="sqlTracingConnectStringDisplayValue" type="xs:string" use="optional"/>
    <xs:attribute name="sqlTracingDirectory" type="xs:string" use="optional"/>
    <xs:attribute name="sqlTracingEnabled" type="xs:boolean" use="optional"/>
    <xs:attribute name="sqlTracingMinimumDuration" type="xs:int" use="optional"/>
    <xs:attribute name="runUnitTestsInAppDomain" type="xs:boolean" use="optional"/>
  </xs:complexType>
  <xs:complexType name="LoadTestResultType">
    <xs:complexContent>
      <xs:extension base="TestResultAggregationType">
        <xs:sequence>
          <xs:element name="AnalyzerViewState" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="LoadTestRunDescriptor" type="LoadTestRunDescriptorType" minOccurs="0"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="Summary" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="PerformanceCounterResults" minOccurs="0">
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element name="PerformanceCounterResult" minOccurs="0" maxOccurs="unbounded">
                        <xs:complexType>
                          <xs:attribute name="machineName" type="xs:string" use="required"/>
                          <xs:attribute name="categoryName" type="xs:string" use="required"/>
                          <xs:attribute name="instanceName" type="xs:string" use="required"/>
                          <xs:attribute name="counterName" type="xs:string" use="required"/>
                          <xs:attribute name="value" type="xs:double" use="required"/>
                          <xs:attribute name="isOverallResultCounter" type="xs:boolean" use="optional" default="true"/>
                          <xs:attribute name="higherIsBetter" type="xs:boolean" use="optional" default="true"/>
                        </xs:complexType>
                      </xs:element>
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>
                <xs:element name="PageSummaries" minOccurs="0">
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element name="PageSummary" minOccurs="0" maxOccurs="unbounded">
                        <xs:complexType>
                          <xs:attribute name="scenarioName" use="required"/>
                          <xs:attribute name="testName" use="required"/>
                          <xs:attribute name="url" use="required"/>
                          <xs:attribute name="pageCount" type="xs:int" use="required"/>
                          <xs:attribute name="responseTime" type="xs:int" use="required"/>
                        </xs:complexType>
                      </xs:element>
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>
                <xs:element name="TestSummaries" minOccurs="0">
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element name="TestSummary" minOccurs="0" maxOccurs="unbounded">
                        <xs:complexType>
                          <xs:attribute name="scenarioName" type="xs:string" use="required"/>
                          <xs:attribute name="testName" type="xs:string" use="required"/>
                          <xs:attribute name="totalTests" type="xs:int" use="required"/>
                          <xs:attribute name="testsFailed" type="xs:int" use="required"/>
                          <xs:attribute name="averageDuration" type="xs:int" use="required"/>
                        </xs:complexType>
                      </xs:element>
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>
                <xs:element name="TransactionSummaries" minOccurs="0">
                  <xs:complexType>
                    <xs:sequence>
                      <xs:element name="TransactionSummary" minOccurs="0" maxOccurs="unbounded">
                        <xs:complexType>
                          <xs:attribute name="scenarioName" type="xs:string" use="required"/>
                          <xs:attribute name="testName" type="xs:string" use="required"/>
                          <xs:attribute name="transactionName" type="xs:string" use="required"/>
                          <xs:attribute name="transactionCount" type="xs:int" use="required"/>
                          <xs:attribute name="elapsedTime" type="xs:string" use="required"/>
                          <xs:attribute name="responseTime" type="xs:string" use="required"/>
                        </xs:complexType>
                      </xs:element>
                    </xs:sequence>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
        <xs:attribute name="runStatus" type="LoadTestRunStatusType" use="optional" default="NotStarted"/>
        <xs:attribute name="runId" type="xs:int" use="required"/>
        <xs:attribute name="controllerStartTime" type="xs:string" use="optional"/>
        <xs:attribute name="loadTestDuration" type="xs:int" use="optional"/>
        <xs:attribute name="loadTestWarmupTime" type="xs:int" use="optional"/>
        <xs:attribute name="previouslyViewed" type="xs:boolean" use="optional" default="false"/>
        <xs:attribute name="resultsRepositoryConnectString" type="xs:string" use="optional"/>
        <xs:attribute name="resultsStoreType" type="LoadTestResultStoreType" use="optional"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="LoadTestRunDescriptorTableType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Tests"/>
      <xs:enumeration value="Requests"/>
      <xs:enumeration value="Transactions"/>
      <xs:enumeration value="Pages"/>
      <xs:enumeration value="Agents"/>
      <xs:enumeration value="Errors"/>
      <xs:enumeration value="SqlTrace"/>
      <xs:enumeration value="Thresholds"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="LoadTestRunDescriptorType">
    <xs:sequence>
      <xs:element name="GraphDescriptors" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="GraphDescriptor" type="GraphDescriptorType" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="isLegendPanelVisible" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="isOverviewPanelVisible" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="isCounterPanelVisible" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="scrollingGraph" type="xs:boolean" use="optional" default="false"/>
    <xs:attribute name="minMaxGraph" type="xs:boolean" use="optional" default="false"/>
    <xs:attribute name="showHorizontalGridOnGraph" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="showThresholdsOnGraph" type="xs:boolean" use="optional" default="false"/>
    <xs:attribute name="showComparison" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="showZoom" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="lockZoom" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="activeConsoleView" type="LoadTestRunDescriptorViewType" use="optional" default="Graph"/>
    <xs:attribute name="selectedGraphPanel1" type="xs:string" use="optional"/>
    <xs:attribute name="selectedGraphPanel2" type="xs:string" use="optional"/>
    <xs:attribute name="selectedGraphPanel3" type="xs:string" use="optional"/>
    <xs:attribute name="selectedGraphPanel4" type="xs:string" use="optional"/>
    <xs:attribute name="graphPanelLayout" type="PanelLayoutType" use="optional" default="FourGrid"/>
    <xs:attribute name="tablePanelLayout" type="PanelLayoutType" use="optional" default="TwoHorizontal"/>
    <xs:attribute name="selectedTablePanel1" type="LoadTestRunDescriptorTableType" use="optional" default="Tests"/>
    <xs:attribute name="selectedTablePanel2" type="LoadTestRunDescriptorTableType" use="optional" default="Errors"/>
    <xs:attribute name="selectedTablePanel3" type="LoadTestRunDescriptorTableType" use="optional" default="Thresholds"/>
    <xs:attribute name="selectedTablePanel4" type="LoadTestRunDescriptorTableType" use="optional" default="Transactions"/>
    <xs:attribute name="controllerName" type="xs:string" use="optional"/>
    <xs:attribute name="isLocalRun" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="testRunId" type="IDSimpleType" use="required"/>
    <xs:attribute name="repositoryRunId" type="xs:int" use="optional" default="0"/>
  </xs:complexType>
  <xs:simpleType name="LoadTestRunDescriptorViewType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="None"/>
      <xs:enumeration value="Graph"/>
      <xs:enumeration value="Summary"/>
      <xs:enumeration value="Table"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="LoadTestRunStatusType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Connecting"/>
      <xs:enumeration value="InitializingResultsCollection"/>
      <xs:enumeration value="NotStarted"/>
      <xs:enumeration value="Queued"/>
      <xs:enumeration value="Starting"/>
      <xs:enumeration value="Stopping"/>
      <xs:enumeration value="Stopped"/>
      <xs:enumeration value="WarmingUp"/>
      <xs:enumeration value="WritingResults"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="LoadTest" type="LoadTestType"/>
  <xs:complexType name="LoadTestType">
    <xs:sequence maxOccurs="unbounded">
      <xs:element name="Scenarios">
        <xs:complexType>
          <xs:sequence maxOccurs="unbounded">
            <xs:element name="Scenario">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="ThinkProfile">
                    <xs:complexType>
                      <xs:attribute name="Pattern" type="xs:string" use="optional" form="unqualified"/>
                      <xs:attribute name="Value" type="xs:float" use="required" form="unqualified"/>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="LoadProfile">
                    <xs:complexType>
                      <xs:attribute name="Pattern" type="xs:string" use="required" form="unqualified"/>
                      <xs:attribute name="InitialUsers" type="xs:int" use="required" form="unqualified"/>
                      <xs:attribute name="MaxUsers" type="xs:int" use="optional" form="unqualified"/>
                      <xs:attribute name="StepUsers" type="xs:int" use="optional" form="unqualified"/>
                      <xs:attribute name="StepDuration" type="xs:int" use="optional" form="unqualified"/>
                      <xs:attribute name="StepRampTime" type="xs:int" use="optional" form="unqualified"/>
                      <xs:attribute name="MachineName" type="xs:string" use="optional" form="unqualified"/>
                      <xs:attribute name="CategoryName" type="xs:string" use="optional" form="unqualified"/>
                      <xs:attribute name="CounterName" type="xs:string" use="optional" form="unqualified"/>
                      <xs:attribute name="InstanceName" type="xs:string" use="optional" form="unqualified"/>
                      <xs:attribute name="MinUserCount" type="xs:int" use="optional" form="unqualified"/>
                      <xs:attribute name="MaxUserCount" type="xs:int" use="optional" form="unqualified"/>
                      <xs:attribute name="MaxUserCountIncrease" type="xs:int" use="optional" form="unqualified"/>
                      <xs:attribute name="MaxUserCountDecrease" type="xs:int" use="optional" form="unqualified"/>
                      <xs:attribute name="MinTargetValue" type="xs:int" use="optional" form="unqualified"/>
                      <xs:attribute name="MaxTargetValue" type="xs:int" use="optional" form="unqualified"/>
                      <xs:attribute name="HigherValuesBetter" type="xs:boolean" use="optional" form="unqualified"/>
                      <xs:attribute name="StopAdjustingAtGoal" type="xs:boolean" use="optional" form="unqualified"/>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="TestMix">
                    <xs:complexType>
                      <xs:sequence maxOccurs="unbounded">
                        <xs:element name="TestProfile" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:attribute name="Name" type="xs:string" use="required" form="unqualified"/>
                            <xs:attribute name="Path" type="xs:string" use="required" form="unqualified"/>
                            <xs:attribute name="Id" type="xs:string" use="required" form="unqualified"/>
                            <xs:attribute name="Percentage" type="xs:float" use="required" form="unqualified"/>
                            <xs:attribute name="Type" type="xs:string" use="required" form="unqualified"/>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="BrowserMix" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence maxOccurs="unbounded">
                        <xs:element name="BrowserProfile">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Browser">
                                <xs:complexType>
                                  <xs:sequence>
                                    <xs:element name="Headers">
                                      <xs:complexType>
                                        <xs:sequence maxOccurs="unbounded">
                                          <xs:element name="Header">
                                            <xs:complexType>
                                              <xs:attribute name="Name" type="xs:string" use="required" form="unqualified"/>
                                              <xs:attribute name="Value" type="xs:string" use="required" form="unqualified"/>
                                            </xs:complexType>
                                          </xs:element>
                                        </xs:sequence>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                  <xs:attribute name="Name" type="xs:string" use="required" form="unqualified"/>
                                  <xs:attribute name="MaxConnections" type="xs:int" use="optional" form="unqualified"/>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                            <xs:attribute name="Percentage" type="xs:float" use="required" form="unqualified"/>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="NetworkMix" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence maxOccurs="unbounded">
                        <xs:element name="NetworkProfile">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Network" type="NetworkType"/>
                            </xs:sequence>
                            <xs:attribute name="Percentage" type="xs:float" use="required" form="unqualified"/>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Name" type="xs:string" use="required" form="unqualified"/>
                <xs:attribute name="IPSwitching" type="xs:boolean" use="optional" form="unqualified"/>
                <xs:attribute name="DelayBetweenIterations" type="xs:int" use="optional" form="unqualified"/>
                <xs:attribute name="PercentNewUsers" type="xs:int" use="optional" form="unqualified"/>
                <xs:attribute name="TestMixType" type="TestMixType" use="optional" form="unqualified"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CounterSets">
        <xs:complexType>
          <xs:sequence maxOccurs="unbounded">
            <xs:element name="CounterSet">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="CounterCategories">
                    <xs:complexType>
                      <xs:sequence maxOccurs="unbounded">
                        <xs:element name="CounterCategory">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="Counters">
                                <xs:complexType>
                                  <xs:sequence maxOccurs="unbounded">
                                    <xs:element name="Counter">
                                      <xs:complexType>
                                        <xs:sequence minOccurs="0">
                                          <xs:element name="ThresholdRules">
                                            <xs:complexType>
                                              <xs:sequence maxOccurs="unbounded">
                                                <xs:element name="ThresholdRule">
                                                  <xs:complexType>
                                                    <xs:sequence>
                                                      <xs:element name="RuleParameters">
                                                        <xs:complexType>
                                                          <xs:sequence maxOccurs="unbounded">
                                                            <xs:element name="RuleParameter">
                                                              <xs:complexType>
                                                                <xs:attribute name="Name" type="xs:string" use="required" form="unqualified"/>
                                                                <xs:attribute name="Value" type="xs:string" use="required" form="unqualified"/>
                                                              </xs:complexType>
                                                            </xs:element>
                                                          </xs:sequence>
                                                        </xs:complexType>
                                                      </xs:element>
                                                    </xs:sequence>
                                                    <xs:attribute name="Classname" type="xs:string" use="required" form="unqualified"/>
                                                  </xs:complexType>
                                                </xs:element>
                                              </xs:sequence>
                                            </xs:complexType>
                                          </xs:element>
                                        </xs:sequence>
                                        <xs:attribute name="Name" type="xs:string" use="required" form="unqualified"/>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                              <xs:element name="Instances" minOccurs="0">
                                <xs:complexType>
                                  <xs:sequence maxOccurs="unbounded">
                                    <xs:element name="Instance">
                                      <xs:complexType>
                                        <xs:attribute name="Name" type="xs:string" use="required" form="unqualified"/>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                            <xs:attribute name="Name" type="xs:string" use="required" form="unqualified"/>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="DefaultCountersForAutomaticGraphs" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="DefaultCounter" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:attribute name="CategoryName"/>
                            <xs:attribute name="CounterName"/>
                            <xs:attribute name="InstanceName"/>
                            <xs:attribute name="GraphName"/>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Name" type="xs:string" use="required" form="unqualified"/>
                <xs:attribute name="CounterSetType" type="xs:string" use="required" form="unqualified"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="RunConfigurations">
        <xs:complexType>
          <xs:sequence maxOccurs="unbounded">
            <xs:element name="RunConfiguration">
              <xs:complexType>
                <xs:annotation>
                  <xs:documentation>TODO: leave up to NC: this type is a duplicate of LoadTestRunCOnfigurationType. The differentces are results of WebTestSuiteSerializer (upper case for attributes and enums are strings vs ints)</xs:documentation>
                </xs:annotation>
                <xs:sequence>
                  <xs:element name="CounterSetMappings">
                    <xs:complexType>
                      <xs:sequence minOccurs="0" maxOccurs="unbounded">
                        <xs:element name="CounterSetMapping">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element name="CounterSetReferences">
                                <xs:complexType>
                                  <xs:sequence maxOccurs="unbounded">
                                    <xs:element name="CounterSetReference">
                                      <xs:complexType>
                                        <xs:attribute name="CounterSetName" type="xs:string" use="required" form="unqualified"/>
                                      </xs:complexType>
                                    </xs:element>
                                  </xs:sequence>
                                </xs:complexType>
                              </xs:element>
                            </xs:sequence>
                            <xs:attribute name="ComputerName" type="xs:string" use="required" form="unqualified"/>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                  <xs:element name="ContextParameters" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="ContextParameter" minOccurs="0">
                          <xs:complexType>
                            <xs:attribute name="Name" use="required"/>
                            <xs:attribute name="Value" use="optional"/>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="Name" type="xs:string" use="required" form="unqualified"/>
                <xs:attribute name="Description" type="xs:string" use="optional" form="unqualified"/>
                <xs:attribute name="ResultsStoreType" type="xs:string" use="required" form="unqualified"/>
                <xs:attribute name="TimingDetailsStorage" type="xs:string" use="required" form="unqualified"/>
                <xs:attribute name="MaxErrorDetails" type="xs:int" use="required" form="unqualified"/>
                <xs:attribute name="MaxRequestUrlsReported" type="xs:int" use="required" form="unqualified"/>
                <xs:attribute name="UseTestIterations" type="xs:boolean" use="optional"/>
                <xs:attribute name="RunDuration" type="xs:int" use="required" form="unqualified"/>
                <xs:attribute name="WarmupTime" type="xs:int" use="required" form="unqualified"/>
                <xs:attribute name="CoolDownTime" type="xs:int" use="optional"/>
                <xs:attribute name="TestIterations" type="xs:int" use="optional"/>
                <xs:attribute name="WebTestConnectionModel" type="WebTestConnectionModel" use="required" form="unqualified"/>
                <xs:attribute name="WebTestConnectionPoolSize" type="xs:int" use="required" form="unqualified"/>
                <xs:attribute name="SampleRate" type="xs:int" use="required" form="unqualified"/>
                <xs:attribute name="ValidationLevel" type="LoadTestValidationLevel" use="required" form="unqualified"/>
                <xs:attribute name="SqlTracingConnectString" type="xs:string" use="optional" form="unqualified"/>
                <xs:attribute name="SqlTracingConnectStringDisplayValue" type="xs:string" use="optional" form="unqualified"/>
                <xs:attribute name="SqlTracingDirectory" type="xs:string" use="optional" form="unqualified"/>
                <xs:attribute name="SqlTracingEnabled" type="xs:boolean" use="optional" form="unqualified"/>
                <xs:attribute name="SqlTracingMinimumDuration" type="xs:int" use="optional" form="unqualified"/>
                <xs:attribute name="RunUnitTestsInAppDomain" type="xs:boolean" use="optional" form="unqualified"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Id" type="xs:string" use="required" form="unqualified"/>
    <xs:attribute name="Name" type="xs:string" use="required" form="unqualified"/>
    <xs:attribute name="Description" type="xs:string" use="optional" form="unqualified"/>
    <xs:attribute name="Owner" type="xs:string" use="optional" form="unqualified"/>
    <xs:attribute name="storage" type="xs:string" use="optional" form="unqualified"/>
    <xs:attribute name="Priority" type="xs:int" use="optional" form="unqualified"/>
    <xs:attribute name="Enabled" type="xs:boolean" use="optional" form="unqualified"/>
    <xs:attribute name="CssProjectStructure" type="xs:string" use="optional" form="unqualified"/>
    <xs:attribute name="CssIteration" type="xs:string" use="optional" form="unqualified"/>
    <xs:attribute name="DeploymentItemsEditable" type="xs:string" use="optional" form="unqualified"/>
    <xs:attribute name="WorkItemIds" type="xs:string" form="unqualified"/>
    <xs:attribute name="TraceLevel" type="xs:string" use="optional" form="unqualified"/>
    <xs:attribute name="CurrentRunConfig" type="xs:string" use="required" form="unqualified"/>
    <xs:attribute name="LoadTestPluginClass" type="xs:string" use="optional" form="unqualified"/>
  </xs:complexType>
  <xs:element name="ManualTest" type="PlainTextManualTestType"/>
  <xs:complexType name="ManualTestResultType">
    <xs:complexContent>
      <xs:extension base="TestResultType">
        <xs:sequence minOccurs="0">
          <xs:element name="Comments" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="testFile" type="xs:string" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="NetworkType">
    <xs:attribute name="Name" type="xs:string" use="required"/>
    <xs:attribute name="BandwidthInKbps" type="xs:float" use="required"/>
  </xs:complexType>
  <xs:element name="OrderedTest" type="OrderedTestType"/>
  <xs:complexType name="OrderedTestType">
    <xs:complexContent>
      <xs:extension base="BaseTestType">
        <xs:sequence>
          <xs:element name="TestLinks" type="TestLinksType" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="continueAfterFailure" type="xs:boolean" use="optional" default="false"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestRunOutputType">
    <xs:all minOccurs="0">
      <xs:element name="StdOut" minOccurs="0"/>
      <xs:element name="StdErr" minOccurs="0"/>
      <xs:element name="DebugTrace" minOccurs="0"/>
      <xs:element name="TraceInfo" minOccurs="0"/>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="OutputType">
    <xs:all minOccurs="0">
      <xs:element name="StdOut" minOccurs="0"/>
      <xs:element name="StdErr" minOccurs="0"/>
      <xs:element name="DebugTrace" minOccurs="0"/>
      <xs:element name="TraceInfo" minOccurs="0"/>
      <xs:element name="ErrorInfo" minOccurs="0">
        <xs:complexType>
          <xs:all minOccurs="0">
            <xs:element name="Message" minOccurs="0" />
            <xs:element name="StackTrace" minOccurs="0" />
          </xs:all>
        </xs:complexType>
      </xs:element>
      <xs:element name="Exception" minOccurs="0" />
        <xs:element name="TextMessages" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Message" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
    </xs:all>
  </xs:complexType>
  <xs:simpleType name="PanelLayoutType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="One"/>
      <xs:enumeration value="TwoHorizontal"/>
      <xs:enumeration value="TwoVertical"/>
      <xs:enumeration value="ThreeLeft"/>
      <xs:enumeration value="ThreeRight"/>
      <xs:enumeration value="ThreeTop"/>
      <xs:enumeration value="ThreeBottom"/>
      <xs:enumeration value="ThreeHorizontal"/>
      <xs:enumeration value="ThreeVertical"/>
      <xs:enumeration value="FourHorizontal"/>
      <xs:enumeration value="FourVertical"/>
      <xs:enumeration value="FourGrid"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="PlainTextManualTestType">
    <xs:complexContent>
      <xs:extension base="BaseTestType">
        <xs:sequence>
          <xs:element name="BodyText" minOccurs="0">
            <xs:complexType mixed="true">
              <xs:sequence>
                <xs:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="PlotDescriptorType">
    <xs:sequence>
      <xs:element name="CounterDescriptor" type="CounterDescriptorType"/>
    </xs:sequence>
    <xs:attribute name="colorArgb" type="xs:int" use="required"/>
    <xs:attribute name="lineStyle" type="xs:int" use="required"/>
    <xs:attribute name="fixedRange" type="xs:double" use="required"/>
    <xs:attribute name="showOnGraph" type="xs:boolean" default="true"/>
    <xs:attribute name="isSelected" type="xs:boolean" default="false"/>
    <xs:attribute name="counterMetadata" type="xs:string" use="optional"/>
  </xs:complexType>
  <xs:complexType name="RangeType">
    <xs:attribute name="lower" use="required"/>
    <xs:attribute name="upper" use="required"/>
  </xs:complexType>
  <xs:complexType name="ResultsType">
    <xs:sequence>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="UnitTestResult" type="UnitTestResultType"/>
        <xs:element name="GenericTestResult" type="TestResultAggregationType"/>
        <xs:element name="TestResult" type="TestResultType"/>
        <xs:element name="ManualTestResult" type="ManualTestResultType"/>
        <xs:element name="TestResultAggregation" type="TestResultAggregationType">
          <xs:annotation>
            <xs:documentation>This one can be used by any other test type as they all can internally call another set of tests and produce results, which are later merged into this aggregation for unified presentation to the caller.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="WebTestResult" type="WebTestResultType"/>
        <xs:element name="LoadTestResult" type="LoadTestResultType"/>
        <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="RuleResultType">
    <xs:sequence>
      <xs:element name="RuleProperties" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="RuleProperty" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attribute name="name" use="required"/>
                <xs:attribute name="value" use="optional"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="name" use="required"/>
    <xs:attribute name="ruleType" use="required"/>
    <xs:attribute name="success" type="xs:boolean" use="optional" default="false"/>
    <xs:attribute name="message" use="optional"/>
  </xs:complexType>
  <xs:complexType name="ScenarioType">
    <xs:sequence>
      <xs:element name="LoadProfile">
        <xs:complexType>
          <xs:attribute name="pattern" type="xs:int" use="optional" default="0"/>
          <xs:attribute name="initialUsers" type="xs:int" use="required"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="ThinkProfile">
        <xs:complexType>
          <xs:attribute name="pattern" type="xs:int" use="optional" default="0"/>
          <xs:attribute name="value" type="xs:double" use="optional" default="0"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="TestMix">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TestProfile" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Percentage">
                    <xs:complexType>
                      <xs:attribute name="hi" type="xs:int" use="optional" default="0"/>
                      <xs:attribute name="lo" type="xs:int" use="optional" default="0"/>
                      <xs:attribute name="mid" type="xs:int" use="optional" default="0"/>
                      <xs:attribute name="flags" type="xs:int" use="optional" default="0"/>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
                <xs:attribute name="percentage"/>
                <xs:attribute name="name" type="xs:string" use="required"/>
                <xs:attribute name="path" type="xs:string" use="required"/>
                <xs:attribute name="type" type="xs:string" use="required"/>
                <xs:attribute name="id" type="IDSimpleType" use="required"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="BrowserMix">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="BrowserProfile" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Browser" type="BrowserType"/>
                </xs:sequence>
                <xs:attribute name="percentage" type="xs:int"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="NetworkMix">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="NetworkProfile" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Network" type="NetworkType"/>
                </xs:sequence>
                <xs:attribute name="percentage" type="xs:int"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="testMixType"/>
    <xs:attribute name="name" type="xs:string" use="required"/>
    <xs:attribute name="ipSwitching" type="xs:boolean" use="optional" default="false"/>
    <xs:attribute name="delayBetweenIterations" type="xs:int" use="optional" default="0"/>
    <xs:attribute name="percentNewUsers" type="xs:int" use="optional" default="100"/>
  </xs:complexType>
  <xs:complexType name="TestEntriesType">
    <xs:sequence>
      <xs:element name="TestEntry" type="TestEntryType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="TestEntryType">
    <xs:sequence>
      <xs:element name="TestEntries" type="TestEntriesType" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="testId" type="IDSimpleType" use="required"/>
    <xs:attribute name="executionId" type="IDSimpleType" use="required"/>
    <xs:attribute name="parentExecutionId" type="IDSimpleType" use="optional" default="00000000-0000-0000-0000-000000000000"/>
    <xs:attribute name="testListId" type="IDSimpleType" use="required"/>
    <xs:attribute name="isTransparent" type="xs:boolean" use="optional" default="true"/>
  </xs:complexType>
  <xs:complexType name="TestLinksType">
    <xs:sequence>
      <xs:element name="TestLink" type="LinkType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="TestLists">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="TestList" type="TestListType" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="TestListType">
    <xs:sequence>
      <xs:element name="Description" minOccurs="0"/>
      <xs:element name="RunConfiguration" type="LinkType" minOccurs="0"/>
      <xs:element name="TestLinks" type="TestLinksType" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="id" type="IDSimpleType" use="required"/>
    <xs:attribute name="name" type="xs:string" use="required"/>
    <xs:attribute name="enabled" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="parentListId" type="IDSimpleType" use="optional" default="00000000-0000-0000-0000-000000000000"/>
  </xs:complexType>
  <xs:complexType name="TestResultAggregationType">
    <xs:complexContent>
      <xs:extension base="TestResultType">
        <xs:sequence minOccurs="0">
          <xs:element name="Counters" type="CountersType" minOccurs="0"/>
          <xs:element name="InnerResults" type="ResultsType" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="TestResultType">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="Output" minOccurs="0" type="OutputType" />
      <xs:element name="WorkItems" type="WorkItemIDsType" minOccurs="0" />
      <xs:element name="Timers" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Timer" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attribute name="name" type="xs:string" use="required"/>
                <xs:attribute name="startTime" type="xs:string" use="required"/>
                <xs:attribute name="duration" type="xs:int" use="optional"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:choice>
    <xs:attribute name="testName" type="xs:string" use="required"/>
    <xs:attribute name="testType" type="IDSimpleType" use="required"/>
    <xs:attribute name="testId" type="IDSimpleType" use="required"/>
    <xs:attribute name="executionId" type="IDSimpleType" use="optional"/>
    <xs:attribute name="parentExecutionId" type="IDSimpleType" use="optional"/>
    <xs:attribute name="testListId" type="IDSimpleType" use="required"/>
    <xs:attribute name="outcome" type="xs:string" use="optional"/>
    <xs:attribute name="computerName" type="xs:string" use="required"/>
    <xs:attribute name="startTime" type="xs:string" use="optional"/>
    <xs:attribute name="endTime" type="xs:string" use="optional"/>
    <xs:attribute name="duration" type="xs:string" use="optional"/>
    <xs:attribute name="spoolMessage" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="processExitCode" type="xs:int" use="optional"/>
    <xs:attribute name="isAborted" type="xs:boolean" use="optional"/>
  </xs:complexType>
  <xs:element name="TestRunConfiguration" type="TestRunConfiguration"/>
  <xs:complexType name="TestRunConfiguration">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="Description" minOccurs="0"/>
      <xs:element name="CodeCoverage" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Regular" minOccurs="0">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="CodeCoverageItem" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence minOccurs="0">
                        <xs:element name="KeyFile" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:attribute name="path" type="xs:string" use="required"/>
                            <xs:attribute name="isPublicKey" type="xs:boolean" use="optional" default="false"/>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                      <xs:attribute name="binaryFile" type="xs:string" use="required"/>
                      <xs:attribute name="pdbFile" type="xs:string" use="optional"/>
                      <xs:attribute name="outputDirectory" type="xs:string" use="optional"/>
                      <xs:attribute name="instrumentInPlace" type="xs:boolean" use="optional" default="false"/>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element name="AspNet" minOccurs="0">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="AspNetCodeCoverageItem" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:attribute name="id" type="IDSimpleType" use="required"/>
                      <xs:attribute name="name" type="xs:string" use="required"/>
                      <xs:attribute name="applicationRoot" type="xs:string" use="required"/>
                      <xs:attribute name="url" type="xs:string" use="required"/>
                      <xs:attribute name="isIIS" type="xs:boolean" use="optional"/>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="enabled" type="xs:boolean" use="optional" default="false"/>
          <xs:attribute name="instrumentInPlace" type="xs:boolean" use="optional" default="true"/>
          <xs:attribute name="keyFile" type="xs:string" use="optional"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="Timeouts" minOccurs="0">
        <xs:complexType>
          <xs:attribute name="runTimeout" type="xs:int" use="optional" default="0"/>
          <xs:attribute name="testTimeout" type="xs:int" use="optional" default="1800000"/>
          <xs:attribute name="agentNotRespondingTimeout" type="xs:int" use="optional" default="300000"/>
          <xs:attribute name="deploymentTimeout" type="xs:int" use="optional" default="300000"/>
          <xs:attribute name="scriptTimeout" type="xs:int" use="optional" default="300000"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="Remote" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Agent" minOccurs="0">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="RequiredProperties" minOccurs="0">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Property" minOccurs="0" maxOccurs="unbounded">
                          <xs:complexType>
                            <xs:attribute name="name" type="xs:string" use="required"/>
                            <xs:attribute name="value" type="xs:string" use="required"/>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="controllerName" type="xs:string" use="required"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="Deployment" minOccurs="0">
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="DeploymentItemsType">
              <xs:attribute name="deploySatelliteAssemblies" type="xs:boolean" use="optional" default="false"/>
              <xs:attribute name="ignoredDependentAssemblies" type="xs:string" use="optional"/>
              <xs:attribute name="userDeploymentRoot" type="xs:string" use="optional"/>
              <xs:attribute name="runDeploymentRoot" type="xs:string" use="optional"/>
              <xs:attribute name="useDefaultDeploymentRoot" type="xs:boolean" use="optional" default="true"/>
              <xs:attribute name="enabled" type="xs:boolean" use="optional" default="true"/>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="NamingScheme" minOccurs="0">
        <xs:complexType>
          <xs:attribute name="baseName" type="xs:string" use="optional"/>
          <xs:attribute name="appendTimeStamp" type="xs:boolean" use="optional" default="true"/>
          <xs:attribute name="useDefault" type="xs:boolean" use="optional" default="true"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="Scripts" minOccurs="0">
        <xs:complexType>
          <xs:attribute name="cleanupScript" type="xs:string" use="optional"/>
          <xs:attribute name="setupScript" type="xs:string" use="optional"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="Buckets" minOccurs="0">
        <xs:complexType>
          <xs:attribute name="threshold" type="xs:int" use="optional" default="1000"/>
          <xs:attribute name="size" type="xs:int" use="optional" default="200"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="ExecutionThread" minOccurs="0">
        <xs:complexType>
          <xs:attribute name="apartmentState" use="optional" default="0"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="Hosts" minOccurs="0">
        <xs:complexType>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="AspNet" minOccurs="0">
              <xs:annotation>
                <xs:documentation>Only one instance is allowed but no check is done due to xsd limitations.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:sequence minOccurs="0">
                  <xs:element name="DevelopmentServer" type="DevelopmentServerType" minOccurs="0"/>
                </xs:sequence>
                <xs:attribute name="name" type="xs:string" use="optional"/>
                <xs:attribute name="urlToTest" type="xs:string" use="required"/>
                <xs:attribute name="executionType" type="xs:string" use="optional"/>
              </xs:complexType>
            </xs:element>
            <xs:element name="DeviceHostRunConfigData" minOccurs="0">
              <xs:annotation>
                <xs:documentation>Only one instance is allowed but no check is done due to xsd limitations.</xs:documentation>
              </xs:annotation>
              <xs:complexType>
                <xs:attribute name="name" type="xs:string" use="optional"/>
                <xs:attribute name="deviceId" type="xs:string" use="optional"/>
                <xs:attribute name="deviceName" type="xs:string" use="optional"/>
                <xs:attribute name="platformId" type="xs:string" use="optional"/>
                <xs:attribute name="platformName" type="xs:string" use="optional"/>
                <xs:attribute name="uiPlatformId" type="xs:string" use="optional"/>
              </xs:complexType>
            </xs:element>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          </xs:choice>
          <xs:attribute name="type" type="xs:string" use="optional"/>
          <xs:attribute name="skipUnhostableTests" type="xs:boolean" use="optional" default="true">
            <xs:annotation>
              <xs:documentation>New in Orcas</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="TestTypeSpecific" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="WebTestRunConfiguration" type="WebTestRunConfigurationType" minOccurs="0">
              <xs:annotation>
                <xs:documentation>Only one instance is allowed but no check is done due to xsd limitations.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="WebTestRunConfig" type="WebTestRunConfigurationType" minOccurs="0">
              <xs:annotation>
                <xs:documentation>Only one instance is allowed but no check is done due to xsd limitations.</xs:documentation>
                <xs:documentation>Deprecated. Use WebTestRunConfiguration instead.</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
          </xs:choice>
        </xs:complexType>
      </xs:element>
      <xs:element name="Plugins" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Plugin" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Constraints" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Agent" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:choice>
    <xs:attribute name="id" type="IDSimpleType" use="required"/>
    <xs:attribute name="name" type="xs:string" use="required"/>
    <xs:attribute name="isExecutedRemotely" type="xs:boolean" use="optional" default="false"/>
    <xs:attribute name="abortRunOnError" type="xs:boolean" use="optional" default="false"/>
    <xs:attribute name="autoSaveResults" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="mapIPAddresses" type="xs:boolean" use="optional" default="false"/>
    <xs:attribute name="traceExecutionSequence" type="xs:boolean" use="optional" default="false"/>
  </xs:complexType>
  <xs:element name="TestRun" type="TestRunType"/>
  <xs:complexType name="TestRunType">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="TestRunConfiguration" type="TestRunConfiguration" minOccurs="0"/>
      <xs:element name="ResultSummary" minOccurs="0">
        <xs:complexType>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="Counters" type="CountersType" minOccurs="0"/>
            <xs:element name="Output" type="TestRunOutputType" minOccurs="0"/>
            <xs:element name="RunInfos" minOccurs="0">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="RunInfo" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="Text" minOccurs="0"/>
                        <xs:element name="Exception" minOccurs="0"/>
                      </xs:sequence>
                      <xs:attribute name="computerName" type="xs:string" use="required"/>
                      <xs:attribute name="outcome" type="TestOutcome" use="required"/>
                      <xs:attribute name="timestamp" type="xs:string" use="required"/>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:choice>
          <xs:attribute name="outcome" type="xs:string" use="required"/>
          <xs:attribute name="isPartialRun" type="xs:boolean" use="optional" default="false"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="Times" minOccurs="0">
        <xs:complexType>
          <xs:attribute name="creation" type="xs:string" use="required"/>
          <xs:attribute name="queuing" type="xs:string" use="optional"/>
          <xs:attribute name="start" type="xs:string" use="optional"/>
          <xs:attribute name="finish" type="xs:string" use="optional"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="TestDefinitions" minOccurs="0">
        <xs:complexType>
          <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:element name="UnitTest" type="UnitTestType"/>
            <xs:element name="UnitTestElement" type="UnitTestType">
              <xs:annotation>
                <xs:documentation>// Deprecated. Use UnitTest instead</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="ManualTest" type="PlainTextManualTestType"/>
            <xs:element name="WebTest" type="DeclarativeWebTestElementType"/>
            <xs:element name="CodedWebTest" type="CodedWebTestElementType"/>
            <xs:element name="OrderedTest" type="OrderedTestType"/>
            <xs:element name="LoadTest" type="LoadTestType"/>
            <xs:element name="GenericTest" type="GenericTestType"/>
            <xs:any namespace="##other" processContents="lax"/>
          </xs:choice>
        </xs:complexType>
      </xs:element>
      <xs:element name="TestLists" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="TestList" type="TestListType" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="TestEntries" type="TestEntriesType" minOccurs="0"/>
      <xs:element name="Results" type="ResultsType" minOccurs="0"/>
      <xs:element name="UserData" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:any namespace="##any" processContents="lax"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Build" minOccurs="0">
        <xs:complexType>
          <xs:attribute name="flavor" type="xs:string" use="optional"/>
          <xs:attribute name="platform" type="xs:string" use="optional"/>
        </xs:complexType>
      </xs:element>
    </xs:choice>
    <xs:attribute name="id" type="IDSimpleType" use="required"/>
    <xs:attribute name="name" type="xs:string" use="required"/>
    <xs:attribute name="runUser" type="xs:string" use="optional"/>
  </xs:complexType>
  <xs:complexType name="UnitTestType">
    <xs:complexContent>
      <xs:extension base="BaseTestType">
        <xs:sequence>
          <xs:element name="TestMethod">
            <xs:complexType>
              <xs:attribute name="codeBase" type="xs:string" use="required"/>
              <xs:attribute name="className" type="xs:string" use="required"/>
              <xs:attribute name="name" type="xs:string" use="required"/>
              <xs:attribute name="expectedException" type="xs:string" use="optional"/>
              <xs:attribute name="expectedExceptionMessage" type="xs:string" use="optional"/>
              <xs:attribute name="isValid" type="xs:boolean" use="optional" default="false"/>
              <xs:attribute name="adapterTypeName" type="xs:string" use="optional"/>
            </xs:complexType>
          </xs:element>
          <xs:element name="DataSource" minOccurs="0">
            <xs:complexType>
              <xs:attribute name="settingName" type="xs:string" use="optional"/>
              <xs:attribute name="accessMethod" type="xs:string" use="optional"/>
              <xs:attribute name="connectionString" type="xs:string" use="optional"/>
              <xs:attribute name="providerInvariantName" type="xs:string" use="optional"/>
              <xs:attribute name="tableName" type="xs:string" use="optional"/>
            </xs:complexType>
          </xs:element>
          <xs:element name="AspNet" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="DevelopmentServer" type="DevelopmentServerType" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
              <xs:attribute name="webSiteUrl" type="xs:string" use="optional"/>
            </xs:complexType>
          </xs:element>
          <xs:element name="AspNetDevelopmentServers" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="DevelopmentServer" minOccurs="0" maxOccurs="unbounded"/>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="UnitTestResultType">
    <xs:complexContent>
      <xs:extension base="TestResultAggregationType">
        <xs:attribute name="resultType" type="xs:string" use="optional"/>
        <xs:attribute name="dataRowInfo" type="xs:string" use="optional"/>
        <xs:attribute name="hasSufficientAccess" type="xs:boolean" use="optional" default="true"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="UnitTestResultTypeEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="NotDataDriven"/>
      <xs:enumeration value="DataDrivenTest"/>
      <xs:enumeration value="DataDrivenDataRow"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="ViewType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="None"/>
      <xs:enumeration value="Graph"/>
      <xs:enumeration value="Summary"/>
      <xs:enumeration value="Table"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="WebDataType">
    <xs:sequence>
      <xs:element name="Headers" minOccurs="0">
        <xs:complexType/>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="url" type="xs:string" use="optional"/>
    <xs:attribute name="command" type="xs:string" use="optional"/>
    <xs:attribute name="contentType" type="xs:string" use="optional"/>
    <xs:attribute name="encodingName" type="xs:string" use="optional"/>
  </xs:complexType>
  <xs:complexType name="WebRequestResultType">
    <xs:sequence>
      <xs:element name="Request">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Headers" minOccurs="0"/>
          </xs:sequence>
          <xs:attribute name="url"/>
          <xs:attribute name="command"/>
          <xs:attribute name="contentType"/>
          <xs:attribute name="encoding"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="Response">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Headers" minOccurs="0"/>
          </xs:sequence>
          <xs:attribute name="url"/>
          <xs:attribute name="contentType"/>
          <xs:attribute name="statusLine"/>
          <xs:attribute name="pageTime"/>
          <xs:attribute name="time"/>
          <xs:attribute name="statusCodeString" type="xs:string" use="optional"/>
          <xs:attribute name="contentLength" type="xs:string" use="optional"/>
        </xs:complexType>
      </xs:element>
      <xs:element name="Context">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Entry" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attribute name="name" type="xs:string" use="required"/>
                <xs:attribute name="value" type="xs:string" use="required"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Errors" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Error" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
		<xs:sequence>
		  <xs:element name="StackTrace" minOccurs="0"/>
		  <xs:element name="ExceptionText" minOccurs="0"/>
		</xs:sequence>
                <xs:attribute name="type" type="WebTestErrorType" use="optional"/>
                <xs:attribute name="subType" type="xs:string" use="optional"/>
                <xs:attribute name="text" type="xs:string" use="required"/>
                <xs:attribute name="stackTrace" type="xs:string" use="optional"/>
                <xs:attribute name="exceptionText" type="xs:string" use="optional"/>
                <xs:attribute name="time" type="xs:string" use="optional"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="DependantResults" type="WebRequestResultsType" minOccurs="0"/>
      <xs:element name="ValidationRuleResults" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ValidationRuleResult" type="RuleResultType" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="ExtractionRuleResults" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ExtractionRuleResult" type="RuleResultType" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="redirectUrl" type="xs:string" use="optional"/>
    <xs:attribute name="exceptionMessage" type="xs:string" use="optional"/>
    <xs:attribute name="run" type="xs:int" use="optional"/>
    <xs:attribute name="submitted" type="xs:boolean" use="optional"/>
    <xs:attribute name="cached" type="xs:boolean" use="optional"/>
    <xs:attribute name="isRedirectFollow" type="xs:boolean" use="optional"/>
    <xs:attribute name="requestBodyBytesHandle" type="xs:int" use="optional"/>
    <xs:attribute name="responseBytesHandle" type="xs:int" use="optional"/>
    <xs:attribute name="resultsUrl" type="xs:string"/>
    <xs:attribute name="httpStatus" type="xs:int" default="200"/>
    <xs:attribute name="recordResult" type="xs:boolean" default="false"/>
    <xs:attribute name="scenarioName" type="xs:string"/>
    <xs:attribute name="testCaseName" type="xs:string"/>
    <xs:attribute name="failedValidationRuleCount" type="xs:int"/>
    <xs:attribute name="successfulExtractionRuleCount" type="xs:int"/>
    <xs:attribute name="failedExtractionRuleCount" type="xs:int"/>
    <xs:attribute name="requestPassedByCode" type="xs:boolean" use="optional"/>
  </xs:complexType>
  <xs:complexType name="WebRequestResultsType">
    <xs:sequence>
      <xs:element name="WebRequestResult" type="WebRequestResultType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="WebTestErrorTypeEnum">
    <xs:restriction base="xs:string">
      <xs:enumeration value="TestError"/>
      <xs:enumeration value="Exception"/>
      <xs:enumeration value="HttpError"/>
      <xs:enumeration value="ValidationRuleError"/>
      <xs:enumeration value="ExtractionRuleError"/>
      <xs:enumeration value="Timeout"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="WebTestErrorType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="TestError"/>
      <xs:enumeration value="Exception"/>
      <xs:enumeration value="HttpError"/>
      <xs:enumeration value="ValidationRuleError"/>
      <xs:enumeration value="ExtractionRuleError"/>
      <xs:enumeration value="Timeout"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:complexType name="WebTestItemsType">
    <xs:sequence>
      <xs:choice maxOccurs="unbounded">
        <xs:element name="Request" type="WebTestRequestType" maxOccurs="unbounded"/>
        <xs:element name="TransactionTimer">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Items" type="WebTestItemsType"/>
            </xs:sequence>
            <xs:attribute name="Name" type="xs:string" use="required"/>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="WebTestRunConfigurationType">
    <xs:sequence>
      <xs:element name="Browser" type="BrowserType" minOccurs="0"/>
      <xs:element name="Network" type="NetworkType" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="simulateThinkTimes" type="xs:boolean" use="optional" default="false"/>
    <xs:attribute name="stepping" type="xs:boolean" use="optional" default="false"/>
    <xs:attribute name="runUntilDataExhausted" type="xs:boolean" use="optional" default="false"/>
    <xs:attribute name="iterationCount" type="xs:int" use="optional" default="1"/>
    <xs:attribute name="testTypeId" type="IDSimpleType" use="optional"/>
  </xs:complexType>
  <xs:complexType name="WebTestRequestType">
    <xs:sequence>
      <xs:element name="StringHttpBody" minOccurs="0">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="contentType" type="xs:string" use="required"/>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="DependentRequests" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Request" type="WebTestRequestType" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Headers" type="HeadersType" minOccurs="0"/>
      <xs:element name="ExtractionRules" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="ExtractionRule" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attribute name="className" type="xs:string" use="required"/>
                <xs:attribute name="variableName" type="xs:string" use="required"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="QueryStringParameters" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="QueryStringParameter" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attribute name="name" type="xs:string" use="required"/>
                <xs:attribute name="value" type="xs:string" use="required"/>
                <xs:attribute name="useToGroupResults" type="xs:boolean" use="optional" default="false"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="FormPostHttpBody" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="FormPostParameter" maxOccurs="unbounded">
              <xs:complexType>
                <xs:attribute name="name" type="xs:string" use="required"/>
                <xs:attribute name="value" type="xs:string" use="required"/>
              </xs:complexType>
            </xs:element>
            <xs:element name="FileUploadParameter">
              <xs:complexType>
                <xs:attribute name="name" type="xs:string" use="required"/>
                <xs:attribute name="fileName" type="xs:string" use="required"/>
                <xs:attribute name="contentType" type="xs:string" use="required"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="method" type="xs:string" use="required"/>
    <xs:attribute name="version" type="xs:decimal" use="optional"/>
    <xs:attribute name="url" type="xs:string" use="required"/>
    <xs:attribute name="thinkTime" type="xs:unsignedByte" use="optional"/>
    <xs:attribute name="timeout" type="xs:unsignedByte" use="optional"/>
    <xs:attribute name="parseLinks" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="followRedirects" type="xs:boolean" use="optional" default="true"/>
    <xs:attribute name="cache" type="xs:boolean" use="optional" default="true"/>
  </xs:complexType>
  <xs:complexType name="WebTestResultType">
    <xs:complexContent>
      <xs:extension base="TestResultType">
        <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="ByteArrayCache" minOccurs="0">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="Entry" minOccurs="0" maxOccurs="unbounded">
                  <xs:complexType>
                    <xs:attribute name="handle" type="xs:int" use="required"/>
                    <xs:attribute name="bytes" use="required"/>
                  </xs:complexType>
                </xs:element>
              </xs:sequence>
              <xs:attribute name="nextHandle" type="xs:int" use="optional" default="0"/>
            </xs:complexType>
          </xs:element>
          <xs:element ref="TestRunConfiguration"/>
          <xs:element name="WebRequestResults" type="WebRequestResultsType" minOccurs="0"/>
          <xs:element name="WebTestResultDetails" type="WebTestResultDetailsType" minOccurs="0"/>
        </xs:choice>
        <xs:attribute name="dataRowCount" type="xs:unsignedInt" use="optional" default="0"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="WebTestResultDetailsType">
    <xs:sequence>
      <xs:element name="WebTestResultIterations" minOccurs="0" maxOccurs="1">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="WebTestResultIteration" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="WebTestResultGroup" type="WebTestResultGroupType" minOccurs="0"/>
                </xs:sequence>
                <xs:attribute name="iterationNumber" type="xs:int" use="required"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="WebTestResultCommentType">
    <xs:attribute name="comment" type="xs:string"/>
  </xs:complexType>
  <xs:complexType name="WebTestResultGroupType">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="WebTestResultComment" type="WebTestResultCommentType"/>
      <xs:element name="WebTestResultTransaction" type="WebTestResultTransactionType"/>
      <xs:element name="WebTestResultPage" type="WebTestResultPageType"/>
    </xs:choice>
  </xs:complexType>
  <xs:complexType name="WebTestResultTransactionType">
    <xs:sequence>
      <xs:element name="WebTestResultGroup" type="WebTestResultGroupType" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="name" type="xs:string"/>
    <xs:attribute name="isIncludedTest" type="xs:boolean"/>
    <xs:attribute name="responseTime"/>
  </xs:complexType>
  <xs:complexType name="WebTestResultPageType">
    <xs:sequence>
      <xs:element name="WebRequestResult" type="WebRequestResultType"/>
      <xs:element name="RedirectedPages" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="RedirectedPage" type="WebTestResultRedirectedPageType" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="WebTestResultRedirectedPageType">
    <xs:sequence>
      <xs:element name="WebRequestResult" type="WebRequestResultType"/>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="WorkItemIDsType">
    <xs:sequence>
      <xs:element name="WorkItem" type="IDElementType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <xs:simpleType name="TestMixType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="PercentageOfTestsStarted"/>
      <xs:enumeration value="PercentageOfUsersRunning"/>
      <xs:enumeration value="UserPacing"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="LoadTestResultStoreType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="None"/>
      <xs:enumeration value="Database"/>
      <xs:enumeration value="XmlResultFile"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="LoadTestValidationLevel">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Low"/>
      <xs:enumeration value="Medium"/>
      <xs:enumeration value="High"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="WebTestConnectionModel">
    <xs:restriction base="xs:string">
      <xs:enumeration value="ConnectionPerUser"/>
      <xs:enumeration value="ConnectionPool"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="TestOutcome">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Error"/>
      <xs:enumeration value="Failed"/>
      <xs:enumeration value="Timeout"/>
      <xs:enumeration value="Aborted"/>
      <xs:enumeration value="Inconclusive"/>
      <xs:enumeration value="PassedButRunAborted"/>
      <xs:enumeration value="NotRunnable"/>
      <xs:enumeration value="NotExecuted"/>
      <xs:enumeration value="Disconnected"/>
      <xs:enumeration value="Warning"/>
      <xs:enumeration value="Passed"/>
      <xs:enumeration value="Completed"/>
      <xs:enumeration value="InProgress"/>
      <xs:enumeration value="Pending"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
